Highly available distributed computer systems can provide businesses with round-the-clock uninterrupted access to reliable data. One way to achieve high availability is by implementing computer clustering. A computer system cluster (herein also referred to as cluster) includes a group of two or more nodes wherein each node has the capability to communicate and exchange data with every other node in the cluster. One or more storage devices coupled to one or more cluster nodes can also be included. Maintaining the integrity of data and resources in a cluster, and minimizing the negative effects of split-brain and amnesia can be achieved by using a quorum algorithm and establishing a quorum. In certain scenarios, however, an external vote provided by a quorum device is needed to establish a quorum (e.g., a two-node cluster wherein the majority of votes cannot be gained by a single node).
Currently, very few device types can be used as quorum devices. Furthermore, the current cluster computer program code is a rather long monolithic, and significantly intermeshed code. The cluster code includes quorum algorithm code as well as pieces of computer code written specifically to deal with the few available quorum device types. As a result, adding a new type of quorum device to a cluster can require significant modifications to the cluster code. Of course, such substantial modifications can be a rather time consuming and magnanimous task. Yet further, the cluster code has to be modified repeatedly as new device types are to be used as quorum devices. Still further, the monolithic and intermeshed nature of the code requires that pieces of code associated with every type of quorum device to be loaded into the operating system kernel. In most scenarios, however, the node may only be coupled to a single type of quorum device.